import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common';
import { Observable, map, tap } from 'rxjs';

@Injectable()
export class MapTestInterceptor implements NestInterceptor {
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    //next.handle() 方法来调用请求管道中的下一个处理程序，并返回一个 Observable 对象，这个 Observable 对象代表了请求处理程序的执行结果。
    return next.handle().pipe(
      //map 操作符是一个 RxJS 操作符，它允许我们对 Observable 对象的每个元素进行转换，并返回一个新的 Observable 对象。
      //其中 data 属性的值为原始请求处理结果。

      //在 NestJS 中，拦截器可以用于执行一些常见的任务，例如记录请求日志、验证请求有效性、加密/解密数据等。
      map( data =>{
        return {
          code: 200,
          message: "success",
          data
        }
      })

    )

  }
}
